package com.wang.learrn.common.mybatis;

/**
 * 类描述： 系统中需要用到的枚举值都需要实现该接口
 * 主要作用是用来表示数据库中用于与部分常量的数据进行数值与枚举值之间的转换。
 * 数据库中表示枚举的值习惯用tinyint表示，只占一个字节。大部分枚举都不会超过这个255.
 * @author Charles
 * @time 2021/9/29
 */
public interface IEnum {
    /**
     * 获取枚举值的方法
     * @return
     */
    byte code();

    /**
     * 获取描述
     * @return
     */
    String desc();

    /**
     * 判断是否枚举code是否相同
     *
     * @param code code
     * @return 相同 true 不同 false
     */
    default boolean sameCode(Number code){return code!=null&&code.byteValue()==this.code();}

    /**
     * 用来判断枚举值是否相同，枚举是单例的
     * @param codeEnum
     * @return
     */
    default boolean same(IEnum codeEnum){return codeEnum!=null && codeEnum==this;}

}
